package org.flexspeedup.blog.models
{
import mx.core.IFlexDisplayObject;

import org.flexspeedup.blog.views.PopUp;

[Bindable]
public interface IApplicationModel
{

    //--------------------------------
    // currentState
    //--------------------------------
    /**
     * The application's current view state
     */
    function get currentState():String;
    function set currentState(value:String):void;  
    
    //--------------------------------
    // hasPendingChanges
    //--------------------------------
    /**
     * If true, there is at least one change somewhere that needs to be saved 
     * before continuing
     */
    function get hasPendingChanges():Boolean;
    function set hasPendingChanges(value:Boolean):void;

    //--------------------------------
    // currentUser
    //--------------------------------
    /**
     * The currently authenticated user's nickname
     */
    function get currentUser():String;
    function set currentUser(value:String):void;

    //--------------------------------
    // currentPopUp
    //--------------------------------
    /**
     * The currently opened pop up
     */
    function get currentPopUp():IFlexDisplayObject;
    function set currentPopUp(value:IFlexDisplayObject):void;
}
}